<?php
namespace Home\Model;
use Think\Model;
class DrawerModel extends Model {
    protected $trueTableName = 'drawer';

    /* 用户模型自动验证 */
    protected $_validate = array(
        /* 验证用户名 */
        array('title', '1,20', -1, self::EXISTS_VALIDATE, 'length'), //用户名长度不合法
//        array('user_name', 'checkDenyMember', -2, self::EXISTS_VALIDATE, 'callback'), //用户名禁止注册
//        array('user_name', '', -3, self::EXISTS_VALIDATE, 'unique'), //用户名被占用
//
//        /* 验证密码 */
//        array('password', '6,30', -4, self::EXISTS_VALIDATE, 'length'), //密码长度不合法
//
//        /* 验证邮箱 */
//        array('email', 'email', -5, self::EXISTS_VALIDATE), //邮箱格式不正确
//        array('email', '1,32', -6, self::EXISTS_VALIDATE, 'length'), //邮箱长度不合法
//        array('email', 'checkDenyEmail', -7, self::EXISTS_VALIDATE, 'callback'), //邮箱禁止注册
//        //array('email', '', -8, self::EXISTS_VALIDATE, 'unique'), //邮箱被占用
//
//        /* 验证手机号码 */
//        array('mobile', '//', -9, self::EXISTS_VALIDATE), //手机格式不正确 TODO:
//        array('mobile', 'checkDenyMobile', -10, self::EXISTS_VALIDATE, 'callback'), //手机禁止注册
//        array('mobile', '', -11, self::EXISTS_VALIDATE, 'unique'), //手机号被占用
//
//        /* 验证用户名 */
//        array('nickname', '20', -1, self::EXISTS_VALIDATE, 'length'), //昵称长度不合法
    );

    /* 用户模型自动完成 */
    protected $_auto = array(
//        array('password', 'password_hash', self::MODEL_BOTH, 'function', PASSWORD_DEFAULT),
//        array('reg_time', NOW_TIME, self::MODEL_INSERT),
//        array('reg_ip', 'get_client_ip', self::MODEL_INSERT, 'function', 1),
        array('add_time', NOW_TIME, self::MODEL_INSERT),
        array('update_time', NOW_TIME),
//        array('status', 'getStatus', self::MODEL_BOTH, 'callback'),
    );

    /**
     * 创建一个新的抽屉
     * @param  string $username 用户名
     * @param  string $password 用户密码
     * @param  string $email    用户邮箱
     * @param  string $mobile   用户手机号码
     * @return integer          注册成功-用户信息，注册失败-错误编号
     */
    public function add_drawer($uid, $title, $intro, $cover, $category_id = 0){
        $data = array(
            'uid'         => $uid,
            'title'       => $title,
            'intro'       => $intro,
            'cover'       => $cover,
            'category_id' => $category_id
        );


        /* 添加抽屉 */
        if($this->create($data)){
            $drawer_id = $this->add();
            return $drawer_id;
        } else {
            return $this->getError(); //错误详情见自动验证注释
        }
    }

    /**
     * 获取用户信息
     * @param  string  $uid         用户ID或用户名
     * @param  boolean $is_username 是否使用用户名查询
     * @return array                用户信息
     */
    public function info($drawer_id){
        $map = array();
        $map['id'] = $drawer_id;

        $drawer = $this->where($map)->field('id,uid,title,intro,cover,goods_count,follow_count,recomment_cound,share_count,status')->find();
        if(is_array($drawer) && $drawer['status'] = 1){
            return $drawer;
        } else {
            return -1; //用户不存在或被禁用
        }
    }

    /**
     * 通过用户名和title获得抽屉相关信息
     */
    public function get_drawer_info_by_title($user_id, $title)
    {
        $filter = array('uid'=>$user_id, 'title' => $title, 'status' => 1);
        return M('drawer')->where($filter)->find();
    }


    /**
     * 通过用户id获得用户相关的抽屉列表
     * @param $user_id 用户id
     */
    public function get_user_drawer_list($user_id, $field = true)
    {
        $filter = array('uid' => $user_id, 'status' => 1);
        return M('drawer')->field($field)->where($filter)->select();
    }

    /**
     * 更新用户信息
     * @param int $uid 用户id
     * @param string $password 密码，用来验证
     * @param array $data 修改的字段数组
     * @return true 修改成功，false 修改失败
     * @author huajie <banhuajie@163.com>
     */
    public function updateDrawerFields($uid, $drawer_id, $data){
        if(empty($drawer_id) || empty($data)){
            $this->error = '参数错误！';
            return false;
        }

        $drawer_info = $this->info($drawer_id);
        if(!$drawer_info) {
            $this->error = '抽屉信息不存在';
            return false;
        }

        if($drawer_info['uid'] != $uid) {
            $this->error = '您不能修改别人的抽屉';
            return false;
        }

        //更新用户信息
        $data = $this->create($data);
        if($data){
            return $this->where(array('id'=>$drawer_id))->save($data);
        }
        return false;
    }

}